package com.fxb.learn;

import java.util.*;

/**
 * jdk 11 集合增强
 *
 * @author fangjiaxiaobai
 * @date 2021-11-09 00:04
 */
public class CollectionEnhanceDemo {

    public static void main(String[] args) {
        test2();
    }

    /**
     * 演示 List
     */
    public static void test1() {
        List<Integer> integers = List.of(1, 2, 3, 4);
        List<Integer> integers1 = List.copyOf(integers);
        System.out.println(integers == integers1); // true
//        integers.add(5); //  UnsupportedOperationException
    }

    /**
     * 演示 Set
     */
    public static void test2() {
        Set<Integer> integers = Set.of(1, 2, 3, 4);
        Set<Integer> integers1 = Set.copyOf(integers);
        System.out.println(integers == integers1); // true
//        integers.add(5); //  UnsupportedOperationException

        Set<Integer> integers2 = new HashSet<>();
        integers2.add(1);
        integers2.add(2);
        integers2.add(3);
        Set<Integer> integers3 = Set.copyOf(integers2);
        System.out.println(integers3 == integers2); // false

        // 元素不能重复 =>  java.lang.IllegalArgumentException
        Set<Integer> integers4 = Set.of(1, 2, 3, 4,3);
    }

    /**
     * 演示Map
     */
    public static void test3(){
        Map<String, Integer> map1 = Map.of("k1", 2, "k2", 2);
        Map<String, Integer> map2 = Map.copyOf(map1);
        System.out.println(map1 == map2); // true

        HashMap<String, Integer> map3 = new HashMap<>();
        map3.put("k1",1);
        map3.put("k2",2);
        Map<String, Integer> map4 = Map.copyOf(map3);
        System.out.println(map3 == map4); //false

        // java.lang.IllegalArgumentExceptio
        Map<String, Integer> map5 = Map.of("k1", 2, "k2", 2, "k1", 3);

    }
}
